Meta-models contain information such as rules and constructs and are commonly used to describe a tool, application, data structure, or system. For instance, when modeling a database application, one level of the database may describe the tables that will be utilized in the database application. At another level, the columns and rows, along with the data type may also be described in the database model application.
One drawback of current meta-models is that large amounts of memory overhead and computer processing time are required to store, find, and manipulate boxed attribute values within these models. The boxed attribute values may be stored in an array which further increases the amount of memory needed for storage. The additional memory requirement contributes to increased processing time.
Another drawback of the current meta-models is that code generated may be difficult to debug, as values such as the boxed attribute values typically end up deeply nested within wrapper classes. Additionally, the values of an object may be stored externally to the object itself adding to the complexity of debugging, as the values are not directly observable in a debugger application.
Yet another drawback of current meta-models is that complex calling conventions are required to support complicated features or tools, such as undo/redo and notifications which are implemented in many applications. These calling conventions complicate the code required to access or manipulate the boxed attribute values or the relationships between the elements.
Therefore, there is a need in the art, for a data structure and method that address each of the described drawbacks of current meta-models and efficiently implements object model attributes.